/**
 * 把rgba颜色(或rgb颜色)转成十六进制颜色
 */
export function rgbaToHex(r: number, g: number, b: number, a: number): string {
  r = Math.round(r);
  g = Math.round(g);
  b = Math.round(b);
  a = Math.round(a * 255);
  return (
    "#" +
    ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1) +
    a.toString(16).toUpperCase().padStart(2, "0")
  );
}
/**
 * 把rgb颜色(或rgb颜色)转成十六进制颜色
 */
export function rgbToHex(r: number, g: number, b: number): string {
  let hex = (Math.round(r) << 16) | (Math.round(g) << 8) | Math.round(b);
  return "#" + hex.toString(16).padStart(6, "0");
}
/**
 * 封装hexToRGBA功能函数
 * 功能: 把十六进制颜色转成rgba颜色(或rgb颜色)
 */
export function hexToRGBA(hex: string): {
  r: number;
  g: number;
  b: number;
  a: number;
} {
  // 确保输入的hex是有效的，并去掉可能存在的#号
  hex = hex.replace("#", "");
  // 分解hex字符串为RGBA值
  let r = parseInt(hex.substring(0, 2), 16);
  let g = parseInt(hex.substring(2, 4), 16);
  let b = parseInt(hex.substring(4, 6), 16);
  let a = 1;
  // 检查hex的长度是否为8位
  if (hex.length === 8) {
    const alpha = parseInt(hex.substring(6, 8), 16) / 255; // 将16进制的alpha值转换为0到1之间的浮点数
    a = Number(alpha.toFixed(2));
  }

  // 返回rgba字符串
  return { r, g, b, a };
}
